import java.util.PriorityQueue;
import java.util.Scanner;

public class Test3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        String s = sc.next();
        int[] count = new int[26];
        for (char c : s.toCharArray()) {
            count[c - 'a']++;
        }

        int maxFreq = 0;
        for (int c : count) {
            maxFreq = Math.max(maxFreq, c);
        }
        if (maxFreq > (n + 1) / 2) {
            System.out.println("no");
            return;
        }

        PriorityQueue<int[]> pq = new PriorityQueue<>((a, b) -> b[1] - a[1]);
        for (int i = 0; i < 26; i++) {
            if (count[i] > 0) {
                pq.offer(new int[]{i, count[i]});
            }
        }

        StringBuilder sb = new StringBuilder();
        while (pq.size() > 1) {
            int[] a = pq.poll();
            int[] b = pq.poll();
            sb.append((char) (a[0] + 'a'));
            sb.append((char) (b[0] + 'a'));
            if (--a[1] > 0) pq.offer(a);
            if (--b[1] > 0) pq.offer(b);
        }

        if (!pq.isEmpty()) {
            sb.append((char) (pq.poll()[0] + 'a'));
        }

        System.out.println("yes");
        System.out.println(sb.toString());
    }
}
